<?php

declare(strict_types=1);

namespace app\model\ec;

use think\Model;
use app\eslib\EsUtils;

/**
 * 商品促销推广模型类
 * @version 1.0.0
 */
class AdvertisingsModel extends Model
{
    // 设置当前模型对应的完整数据表名称
    protected $table = 'ec_advertisings';

    // 开启自动时间戳（默认为整型int）
    protected $autoWriteTimestamp = true;

    // 定义时间戳字段名
    protected $createTime = 'created_at';
    protected $updateTime = 'updated_at';

    /**
     * 返回 广告位置 访问器的数据
     * @return array
     */
    public function getLocationDataAttr(): array
    {
        return [
            ['text' => '首页', 'value' => 100],
            ['text' => '首页-顶部横幅轮播图', 'value' => 101],
            ['text' => '首页-限时促销', 'value' => 102],
            ['text' => '首页-大牌特卖', 'value' => 103],
            ['text' => '分类页', 'value' => 200],
            ['text' => '分类页-顶部横幅轮播图', 'value' => 201],
        ];
    }

    /**
     * 返回 广告位置 访问器的值
     * @return string
     */
    public function getLocationTextAttr($value, $data)
    {
        $value = $data['location'];
        if (is_numeric($value)) {
            $value = intval($value);
        }
        $data = (array) $this->getLocationDataAttr();
        $result = array_filter($data, function ($v) use ($value) {
            return $v['value'] == $value;
        }, ARRAY_FILTER_USE_BOTH);
        return $result ? current($result)['text'] : $value;
    }
    /**
     * 返回 状态 访问器的数据
     * @return array
     */
    public function getStatusDataAttr(): array
    {
        return [
            ['text' => '待审核', 'value' => 0],
            ['text' => '审核通过', 'value' => 1],
            ['text' => '审核驳回', 'value' => 2],
        ];
    }

    /**
     * 返回 状态 访问器的值
     * @return string
     */
    public function getStatusTextAttr($value, $data)
    {
        $value = $data['status'];
        if (is_numeric($value)) {
            $value = intval($value);
        }
        $data = (array) $this->getStatusDataAttr();
        $result = array_filter($data, function ($v) use ($value) {
            return $v['value'] == $value;
        }, ARRAY_FILTER_USE_BOTH);
        return $result ? current($result)['text'] : $value;
    }

    /**
     * 使用视图查询
     */
    public function scopeDbView($query)
    {
        return $query->table('v_ec_advertising');
    }

    /**
     * 复制指定的记录
     */
    public static function copy($id)
    {
        $data = self::find($id)->toArray();
        $data['xxx_name'] .= ' - 副本';
        unset($data['id']);
        unset($data['created_at']);
        unset($data['updated_at']);
        try {
            $model = self::create($data);
            return EsUtils::stdMessage(true, '', $model->id);
        } catch (\PDOException $ex) {
            return EsUtils::stdMessage(false, $ex->getMessage());
        }
    }
}
